/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package demo.thread;

import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author VANDH
 */
public class TinhSNT extends Thread {

    public int sntThuN = 0;
    public int n = 0;
    public AtomicInteger sc;

    @Override
    public void run() {
        int k = 0;

        for (int j = 2; k < n; j++) {
            // kiểm tra j có phải là snt không?
            // snt là biến làm cờ, true thì j là snt
            boolean snt = true;

            for (int i = 2; i <= j - 1; i++) {

                if (j % i == 0) { // dừng lại, tạo một object kiểu con của Exception
                    // ArimeticException
                    snt = false;
                    break;
                }
            }

            if (snt == true) {
                sntThuN = j;
                k++;
            }

            try {
                Thread.sleep(1000);
                synchronized (sc) {
                    sc.addAndGet(1);
                    sc.wait();  // vô trạng thái đợi
                    System.out.println("SNT - " + sc);
                }
            } catch (InterruptedException ex) {
                Logger.getLogger(JPII1208A.class.getName()).log(Level.SEVERE, null, ex);
            }

        }

        System.out.println("SNT thứ " + this.n + " = " + sntThuN);
    }
}
